
% 读取Excel文件
data_single = readtable('A3_data_single.xlsx');  % 第二套数据
data_double = readtable('A3_data_double.xlsx');  % 第一套数据

% 读取第150列（单排钢筋衬砌信号和双排钢筋衬砧信号）
yRebar = data_single{:, 150}; % 单排钢筋衬砌信号
yVoid = data_double{:, 150};  % 双排钢筋衬砧信号

% 创建一个2x2的子图，第一行显示信号波形和yRebar的WVD，第二行显示yVoid的WVD和差值WVD
figure;

% 绘制信号波形
subplot(2, 2, 1); % 在2x2子图的第1个位置
plot(yRebar, 'r', 'DisplayName', 'Single Reinforced'); % 绘制第一个信号，红色
hold on;
plot(yVoid, 'b', 'DisplayName', 'Double Reinforced');  % 绘制第二个信号，蓝色
hold off;
xlabel('Time (or Index)');
ylabel('Signal Value');
title('Signal Waveforms');
legend; % 显示图例
grid on;

% 计算并绘制yRebar的WVD
subplot(2, 2, 2); % 在2x2子图的第2个位置
N1 = length(yRebar);
wvd_matrix_rebar = zeros(N1, N1); % 初始化WVD矩阵
for n = 1:N1
    for m = 1:N1
        if (n + m <= N1) && (n - m + 1 >= 1) % 保证不超出数组索引
            wvd_matrix_rebar(n,m) = yRebar(n) * conj(yRebar(n+m-1));
        end
    end
end
[X1, Y1] = meshgrid(1:N1, 1:N1);
surf(X1, Y1, abs(wvd_matrix_rebar), 'EdgeColor', 'none');
colormap('jet');
colorbar;
title('Wigner-Ville Distribution of yRebar (Single Reinforced Signal)');
xlabel('Time index');
ylabel('Time index');
zlabel('WVD Magnitude');

% 计算并绘制yVoid的WVD
subplot(2, 2, 3); % 在2x2子图的第3个位置
N2 = length(yVoid);
wvd_matrix_void = zeros(N2, N2); % 初始化WVD矩阵
for n = 1:N2
    for m = 1:N2
        if (n + m <= N2) && (n - m + 1 >= 1) % 保证不超出数组索引
            wvd_matrix_void(n,m) = yVoid(n) * conj(yVoid(n+m-1));
        end
    end
end
[X2, Y2] = meshgrid(1:N2, 1:N2);
surf(X2, Y2, abs(wvd_matrix_void), 'EdgeColor', 'none');
colormap('jet');
colorbar;
title('Wigner-Ville Distribution of yVoid (Double Reinforced Signal)');
xlabel('Time index');
ylabel('Time index');
zlabel('WVD Magnitude');

% 新增：计算WVD差值并绘制差值图
subplot(2, 2, 4); % 在2x2子图的第4个位置
% 确保两个 WVD 矩阵的大小一致
if N1 ~= N2
    N = min(N1, N2);
    wvd_matrix_rebar = wvd_matrix_rebar(1:N, 1:N);
    wvd_matrix_void = wvd_matrix_void(1:N, 1:N);
else
    N = N1;
end

% 计算 WVD 差值
wvd_diff = abs(wvd_matrix_rebar) - abs(wvd_matrix_void);

% 绘制差值WVD
surf(wvd_diff, 'EdgeColor', 'none');
colormap('jet');
colorbar;
title('Wigner-Ville Distribution Difference');
xlabel('Time index');
ylabel('Time index');
zlabel('Difference Magnitude');











